package com.itheima.d2_reflect_test;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;

/*
    对象框架
    目标：保存任意对象的字段和其数据到文件中去
 */
public class ObjectFrame {
    //
    public static void kuangjia(Object obj) throws IOException, IllegalAccessException {
        //创建输出流写到文件中
        BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt", true));
        //获取class对象
        Class aClass = obj.getClass();
        //通过class对象获取类名
        bw.write("================="+aClass.getSimpleName()+"======================");
        bw.newLine();
        bw.flush();

        //获取class所有的成员变量,所有的包括被private修饰的
        Field[] declaredFields = aClass.getDeclaredFields();
        //遍历
        for (Field declaredField : declaredFields) {
            declaredField.setAccessible(true);//暴力反射
            //再获取每一个成员变量的名称
            String name = declaredField.getName();
            //获取每一个成员变量的值
            Object o = declaredField.get(obj);
            bw.write(name+"="+o);
            bw.newLine();
            bw.flush();
        }
        bw.close();
    }
}
